package com.Dec_TwentyFour;

/**
 * 795. 区间子数组个数
 * 给你一个整数数组 nums 和两个整数：left 及 right 。找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组，并返回满足条件的子数组的个数。
 *
 * 生成的测试用例保证结果符合 32-bit 整数范围。
 *
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 2022/11/24 10:57
 */

public class Solution795 {

    public int numSubarrayBoundedMax(int[] nums, int left, int right) {
        int n=nums.length,ans=0;
        for (int i = 0,j=- 1,k= -1; i < n; i++) {
            if (nums[i]>right){
                k=i;
            }else{
                if (nums[i]<left){
                    if (j>k) ans+=j-k;
                }else {
                    ans+=i-k;
                    j=i;
                }
            }
        }
        return ans;
    }

    public static void main(String[] args) {
        Solution795 solution795=new Solution795();
        System.out.println(solution795.numSubarrayBoundedMax(new int[]{2,9,2,5,6},2,8));
    }

}
